/*----------------------------------------------------------------------------*\
|
|						Public Interface to Muse Technology
|
|							     www.Muse.com
| Author : SunJun 
| Email : sundoom@msn.com
\*----------------------------------------------------------------------------*/

//////////////////////////////////////////////////////////////////////////
// $Id: MData.h,v 1.1 2009/04/03 12:46:09 sunjun Exp $
//////////////////////////////////////////////////////////////////////////

#ifndef __MData__
#define __MData__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

#include <MObject.h>

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN

//////////////////////////////////////////////////////////////////////////

	typedef MPtr<class MData>MDataPtr;

	//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented data interface.
	class API MData : public MObject
	{
	public:
		// constructor
		MData();

		// destructor
		virtual ~MData();

		// set the data
		INLINE VOID	set( const VOID * data, U32 size );

		// get the data
		INLINE const VOID* get() const;

		// the data size
		INLINE U32 size() const;

		// resize the data 
		INLINE VOID resize( U32 size );

		// declare the dynamic creator
		MDECLARE_DYNCREATOR();

		// declare the dispatch map
		MDECLARE_DISPATCH_MAP()

	private:
		std::vector<U8>mData;
	};

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __GHandle__

//////////////////////////////////////////////////////////////////////////